

package com.hex.ds.code.detection.pack.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.hex.ds.code.detection.pack.enums.FilePackEnum;
import io.swagger.annotations.ApiModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.validation.annotation.Validated;

import java.util.Date;
import java.util.List;

/**
 * 脚本打包任务表
 *
 * @author WZH
 * @date 2023-09-13 16:13:23
 */
@Data
@Validated
@TableName("TD_SCRIPT_PACK_TASK")
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value = "脚本打包任务表")
public class ScriptPackTaskEntity extends Model<ScriptPackTaskEntity> {

    private static final long serialVersionUID = 1L;

    /**
     * 脚本打包任务ID
     */
    @TableId(type= IdType.ASSIGN_UUID)
    @ApiModelProperty(value="脚本打包任务ID")
    private String id;

    /**
     * 脚本打包任务名称
     */
    @ApiModelProperty(value="脚本打包任务名称")
    private String scriptPackName;

    /**
     * 集群ID
     */
    @ApiModelProperty(value="集群ID")
    private String clusterId;

    /**
     * 文件获取方式（git拉取/手动上传）
     */
    @ApiModelProperty(value="文件获取方式")
    private String fileObtainingType;

    /**
     * git地址
     */
    @ApiModelProperty(value="git地址")
    private String gitUrl;

    /**
     * git分支名
     */
    @ApiModelProperty(value="git分支名")
    private String gitBranchName;

    /**
     * 临时文件路径
     */
    @ApiModelProperty(value="临时文件路径")
    @TableField(exist = false)
    private String tempPackagePath;

    /**
     * 总文件包路径
     */
    @ApiModelProperty(value="总文件包路径")
    private String masterPackagePath;

    /**
     * 打包状态(扫描中，完成，失败)
     */
    @ApiModelProperty(value="打包状态(扫描中，完成，失败)")
    private String packState;

    /**
     * 发布任务名
     */
    @ApiModelProperty(value="发布任务名")
    @TableField(exist = false)
    private String publishTaskName;

    /**
     * 扫描总数
     */
    @ApiModelProperty(value="扫描总数")
    private Integer scanTotal;

    /**
     * 扫描成功数
     */
    @ApiModelProperty(value="扫描成功数")
    private Integer scanSuccessNumber;

    /**
     * 扫描告警数
     */
    @ApiModelProperty(value="扫描告警数")
    private Integer scanWarnNumber;

    /**
     * 扫描异常数
     */
    @ApiModelProperty(value="扫描异常数")
    private Integer scanErrorNumber;

    /**
     * 扫描失败数
     */
    @ApiModelProperty(value="扫描失败数")
    private Integer scanFailNumber;

    /**
     * 需求编码
     */
    @ApiModelProperty(value="需求编码")
    private String demandCode;

    /**
     * 上线日期
     */
    @ApiModelProperty(value="上线日期")
    private String onlineDate;

    /**
     * 版本号
     */
    @ApiModelProperty(value="版本号")
    private String version;

    /**
     * 创建人
     */
    @ApiModelProperty(value="创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value="创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value="更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String lastUpdateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value="更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date lastUpdateTime;

    /**
     * 删除标识
     */
    @ApiModelProperty(value="删除标识")
    @TableField(fill = FieldFill.INSERT)
    private String del;

    @ApiModelProperty(value="集群名称")
    @TableField(exist = false)
    private String clusterName;

    @ApiModelProperty(value="上线清单上传文件路径")
    @TableField(exist = false)
    private List<String> checkList;

    @ApiModelProperty(value="初始化脚本上传文件路径")
    @TableField(exist = false)
    private List<String> initScriptList;

    @ApiModelProperty(value="下载、推送、稽核脚本上传文件路径")
    @TableField(exist = false)
    private List<String> bizScriptList;

    @ApiModelProperty(value="周期脚本上传文件路径")
    @TableField(exist = false)
    private List<String> cycleScriptList;

    @ApiModelProperty(value="调度配置上传文件路径")
    @TableField(exist = false)
    private List<String> schedulingConfig;

    @ApiModelProperty(value="打包文件命名")
    @TableField(exist = false)
    private String filePackName;

    @ApiModelProperty(value="打包文件路径")
    @TableField(exist = false)
    private String filePackPath;

    public String getFilePackName() {
        return publishTaskName + "_" + demandCode + "_" + onlineDate + "_" + version + FilePackEnum.ZIP_SUFFIX.getValue();
    }
}
